#!/bin/bash


#生成秘钥
keygen(){
    expect <<EOF
        spawn ssh-keygen -t rsa -C "$public_key_desc"
        expect {
            "Enter file in which to save the key" {send "$private_key_file\r";exp_continue}
            "Overwrite" {send "y\r";exp_continue}
            "Enter passphrase" {send "$private_key_password\r";exp_continue}
            "Enter same passphrase again" {send "$private_key_password\r"}
        }
        expect eof
EOF
}


#判断秘钥是否存在
#0-不存在|1-存在
keyExist(){
    if [ -e "$1" ]; then
        return 1;
    else
        return 0;
    fi
}


#主方法
main(){
    #获取秘钥备注：如果从外部传递进来，则使用用户指定的；否则使用年月日时间形成的秘钥备注
    if [[ "$1" = '' ]]; then
        public_key_desc=`date "+%Y-%m-%d %H:%M:%S"` #公钥备注
    else
        public_key_desc=$1
    fi    


    private_key_file="/root/.ssh/id_rsa"    #私钥文件
    private_key_password=''   #私钥密码


    #判断秘钥和公钥是否存在
    keyExist $private_key_file


    if [ $? -eq 1 ]; then
        #让用户选择是否覆盖生成
        echo -n '公钥已存在，是否覆盖生成(yes/no):'
        read conExe

        if [[ "$conExe" = 'y' || "$conExe" = 'yes' ]]; then
            keygen
        fi 

    else
        
        echo '公钥和秘钥不存在，准备生成中...'

        keygen
    fi
}




#执行主方法
main
